
#pragma once

#include <cassert>
#include <iostream>
#include "OgreMath/OgreColourValue.h"

class Ray;
struct Scene;
class Camera;

class SceneRenderer
{
public:
	~SceneRenderer() {}

	virtual void renderScene(std::vector<Ogre::ColourValue> &renderedImage, Scene &scene, const Camera &camera) = 0;
	virtual bool raytrace(Ogre::ColourValue &outColor, const Ray &ray, const Scene &scene, int recursionLevel) const = 0;
	virtual bool raycastAny(const Ray &ray, const Scene &scene, float maxDist) const = 0;
};